<?php

	/**
	* Classe du projet : gbAnalytics
	*
	* @author HAEHNEL Jonathan
	* @date 30/09/2012
	* @copy Application libre open-source sous licence GPL (GNU General Public License)
	*/

class gbCorporate
{
	/**
	* Atributs
	*/
	private $name; // nom de l'entreprise
	private $records; // enregistrement des <cours, pv>
	private $cours_init; // cours initial
	private $qty; // quantité d'actions (negatif = VAD)
	private $is_updated; // entreprise toujours active (a conserver)
	
	/**
	* Constructeur
	*/
	public function __construct($name)
	{
		$this->name = $name;
		$this->records = array();
		$this->qty = 0;
		$this->cours_init = 0;
		$this->is_updated = false;
	}
	
	/**
	* Ajoute un enregistrement
	*/
	public function addRecord($cours, $pv, $qty)
	{
		if($this->isUpdated()) //si la même action dans le SRD et Comptant (recalcul de la pv et du cours)
		{	
			$old = (float) strtr($this->records[$this->countRecords()-1][1],',','.')*$this->qty;
			$new = (float) strtr($pv,',','.')*$qty;
			$qty_total =  (float) $qty+$this->qty;

			$this->records[$this->countRecords()-1][1] = strtr(round(($old+$new)/$qty_total,2),'.',',');
			$this->records[$this->countRecords()-1][0] =  $cours;
			
		}
		else
		{
			$this->records[] = array($cours, $pv);
		}	
	}
	
	/**
	* Compte le nombre d'enregistrements
	*/
	public function countRecords()
	{
		return count($this->records);
	}

	/**
	* Affecte le cours initial de l'action (à l'achat)
	*/
	public function setInitialCost($cours_init, $qty)
	{
		if($this->isUpdated()) //si la même action dans le SRD et Comptant (recalcul du taux initial)
		{			
			$old = (float) strtr($this->cours_init,',','.')*$this->qty;
			$new = (float) strtr($cours_init,',','.')*$qty;
			$qty_total =  (float) $qty+$this->qty;

			$this->cours_init = strtr(round(($old+$new)/$qty_total,2),'.',',');
		}
		else
		{
			$this->cours_init = $cours_init;
		}
	}

	/**
	* Retourne le taux inital de l'action
	*/
	public function getInitialCost()
	{
		return $this->cours_init;
	}

	/**
	* Affecte la quantite d'actions
	*/
	public function setQuantity($qty)
	{
		if($this->isUpdated()) //si la même action dans le SRD et Comptant (recalcul de la quantite totale)
		{			
			$this->qty += $qty;
		}
		else
		{
			$this->qty = $qty;
		}
	}

	/**
	* Retourne la quantité d'action
	*/
	public function getQuantity()
	{
		return $this->qty;
	}
	
	/**
	* Renvoye le status de l'entreprise
	*/
	public function isUpdated()
	{
		return $this->is_updated;
	}
	
	/**
	* Modifie le status de l'entreprise
	*/
	public function update($value)
	{
		$this->is_updated = $value;
	}
	
	/**
	* Retourne le nom de l'entreprise
	*/
	public function getName()
	{
		return $this->name;
	}
	
	/**
	* Retourne les enregistrements de l'entrprise
	*/
	public function getRecords()
	{
		return $this->records;
	}
}
